As information technology has developed, the uses to which it has been put have increased dramatically. In the past, simple solutions were created to deal with discrete problems. Now, computer systems are often highly complex, using a large assortment of processes, events, rules, and/or measurements to provide solutions regarding a host of problems and/or entire problem classes.
One of the challenges in these current, highly complex computing systems is how to respond to problems that may not have been previously encountered. For example, when changes need to be made to such a complex computing system, it can often take much time and/or consideration to determine how these changes are to be introduced. Further, changes to such a computing system must be performed in such a manner that the remainder of the system is not adversely affected.